Security issues relating to computer systems have become an ever increasing problem. Viruses, Trojans, malware, and the like are common threats that are well-known to most computer users. The level of threat is so pervasive that an entire industry has been created to address these problems via use of security-related software and services, such as antivirus, antispyware, firewall software, etc.
Most security attacks are targeted at the software level, and are designed to access various operating system or file resources. For examples, a virus may gain access to a computer system's files via download of an executable program containing the virus' code in a hidden manner. To prevent this type of attack, antivirus software may be used to “scan” downloaded files looking for known or suspicious code. As a result of security threats, many users employ security software.
Although less common, security attacks can also be made at the hardware level. However, there is no equivalent to security software to prevent access to system-level hardware resources and assets, such as configuration registers, range registers, and the like. As a result, system architects design in various hardware- and firmware-based security measures for controlling access to important system resources. This is typically done on a per-system basis, leading to replication of design, debug, and validation work and inconsistent management of security across system designs.